1. Field of the Invention
The present invention relates to computer systems, and more particularly, to computer systems employing Redundant Array of Inexpensive Disks (RAID) systems.
2. Description of the Related Art
Computer systems in general and International Business Machines (IBM) compatible personal computer systems in particular have attained widespread use for providing computer power to many segments of today's modem society. A personal computer system can usually be defined as a desk top, floor standing, or portable microcomputer that includes a system unit having a system processor and associated volatile and non-volatile memory, a display monitor, a keyboard, one or more diskette drives, a fixed disk storage device, and an optional printer. One of the distinguishing characteristics of these systems is the use of a system board to electrically connect these components together. These personal computer systems are information handling systems which are designed primarily to give independent computing power to a single user (or a relatively small group of users in the case of personal computers which serve as computer server systems) and are inexpensively priced for purchase by individuals or small businesses. A personal computer system may also include one or a plurality of I/O devices (i.e. peripheral devices) which are coupled to the system processor and which perform specialized functions. Examples of I/O devices include modems, sound and video devices or specialized communication devices. Mass storage devices such as disk drive systems which include hard disks drives, CD-ROM drives or magneto-optical drives are also considered to be peripheral devices.
Other types of computer systems include network servers which provide shared storage to a network of computer users.
Today's computer systems face an ever increasing need for more data storage capacity. For some computer systems, such as network servers, this need has long outgrown the capacity of a single disk drive. Multiple disk drive systems have been developed to increase the storage capacity of these systems. One problem of using a multiple disk drive system is how to configure the multiple disk drive system to appear as a single storage entity to several users on a network and still provide high speed and reliable data accessing.
One solution for increased memory capacity is to link the multiple disk drives to make a disk drive array. One method, called Redundant Array of Inexpensive Disks (RAID), combines a number of individual disk drives to provide a massive, virtual data storage system. In a RAID system, a controller allocates information between drives to make the drives appear as a single logical drive to a computer system. In addition to increasing storage capacity, a RAID can also be used to increase reliability by providing redundant storage of data blocks on more than one disk drive in the array. Thus, if one disk drive falls, the information stored on that drive can be obtained from other drives storing the same information.
With a RAID system, data may be split among the drives at the bit, byte, or block level. For, example, in a four-drive system, one byte of a four byte block could be stored on the first drive, the next byte on the second drive, and so on. Accordingly, the four drives could provide the four byte block to the data stream four times faster than one drive providing four bytes consecutively. This technique of splitting data between various drives is called data striping.
A RAID system can also be configured to provide redundancy in case one drive fails. This can be accomplished by adding another disk drive to contain a parity byte. In the event that one of the drives fails, the byte lost from the failed drive can be reconstructed with the use of the parity byte stored on the parity disk drive. To form the parity byte, a byte from each disk drive is XORed together. The XOR instruction is also used to recover the bytes from the lost disk drive. If the third disk drive is lost, the remaining bytes are XORed with the parity byte to obtain the lost byte. Thus, the XOR instruction is used to perform the RAID functions of forming a parity block of data and recovering a lost block of data.
The XOR instruction is used in various RAID schemes. One RAID scheme is disclosed in Jones, U.S. Pat. No. 5,506,977.
Currently, the XOR function in RAID programs such as the Windows-NT software RAID and the Dell Small Computer System Interface (SCSI) Array is performed by the integer unit of processors conforming to the X86 architecture or to a RISC architecture. Because these RAID -functions require several XOR instructions, the RAID algorithms require a lot of processor time. What is needed is a method to utilize the processor in a more efficient manner by reducing the number of XOR instructions required, and therefore, improve the speed of the RAID functions.
It is known to provide a processor conforming to the X86 architecture with a multimedia function unit. For example, the processor available under the trade designation Pentium from Intel Corporation has incorporated a multimedia functional unit that is referred to as the MMX functional unit. This processor and multimedia technology is described in the "Intel Architecture MMX(TM)Techlology, Programmer's Reference Manual," March 1996, and the "Intel MMX(TM) Technology, Developer's Guide" which are hereby incorporated by reference in their entirety.